Neither top-down nor bottom-up really describes the process helpfully.
First, a vertical metaphor is a simplistic visualization of how programs change over time. Growth implies a kind of self-similar feedback loop in which the environment affects the program and the program affects the environment.
Second, if we need to have a direction in our metaphor, then known-to-unknown is a helpful description. Known-to-unknown implies that we have some knowledge and experience on which to draw, and that we expect to learn in the course of development. Put these two together and we have programs growing from known to unknown.